package com.charles.mybatis.mapper;

import com.charles.mybatis.entity.EmailSexBean;
import com.charles.mybatis.entity.TUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface TUserMapper {

    int deleteByPrimaryKey(Integer id);

    /**
     * 返回主键的id
     * @param record
     * @return
     */
    int insert1(TUser record);

    /**
     * 返回主键id的另一种写法
     * @param record
     * @return
     */
    int insert2(TUser record);

    /**
     * 动态SQL插入数据
     * @param record
     * @return
     */
    int insertSelective(TUser record);

    /**
     * 根据id查询TUser对象
     * @param id
     * @return
     */
    TUser selectByPrimaryKey(Integer id);

    /**
     * 动态SQL更新
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(TUser record);

    /**
     * 根据主键更新
     * @param record
     * @return
     */
    int updateByPrimaryKey(TUser record);

    /**
     * 一对多查询用户及其工作
     * 联表查询
     * @return
     */
    List<TUser> selectUserJobs1();

    /**
     * 一对多单表查询
     * @return
     */
    List<TUser> selectUserJobs2();

    //多参数传递的三种方法
    //1.通过map的方式传递
    List<TUser> selectByEmailAndSex1(Map<String,Object> param);

    //2.通过注解的方式
    List<TUser> selectByEmailAndSex2(@Param("email")String email,@Param("sex")Byte sex);

    //3.通过传递对象
    List<TUser> selectByEmailAndSex3(EmailSexBean esb);

    /**
     * 批量查询foreach
     * @param names
     * @return
     */
    List<TUser> selectForeach4In(String[] names);

    /**
     * 批量查询
     * @param users
     * @return
     */
    int insertForeach4Batch(List<TUser> users);
}
